Apache Http Server 解决不同域名共用服务器80端口问题
今天部署网站时,用户突然说他们只有一台服务器,一个公网IP,而且现在服务器上已经有一个发布中的网站(显然80端口已被占用),让我们想想办法怎么样才能部署我们的项目到他们服务器上,而且使用同一台服务器,同一个公网IP,第一次遇到这种需求,开始觉得肯定实现不了,但后来百度下,竟然真有方法解决这种问题,强大的代理,发现代理可以实现nginx,Apache Http Server,或者直接在IIS上进行修改配置(不通用,不考虑),大体看了下,感觉Apache Http Server使用起来非常简单,就决定使用它啦,首先在本地进行了一次模拟环境测试,过程中也遇到了一些问题,现在把配置过程记录下来,供遇到同样问题的朋友参考。
一、前期准备:
1、安装Apache Http Server:
我下载的是 httpd-2.2.25-win32-x86-no_ssl.msi(很简单,百度搜下Apache Http Server)
2、俩个模拟服务器,我这边使用的是IIS一个、和tomcat一个(Windows下IIS是现成的,而且可以模拟不同服务器,虽然没啥意思,嘿嘿)
3、修改HOST文件 (C:\Windows\System32\drivers\etc\HOSTS)
增加俩项(模拟不同域名)
127.0.0.1 www.aaa.com
127.0.0.1 www.bbb.com
二、修改配置文件
现在准备工作就算完成啦,现在开始进行修改Apache Http Server配置文件(httpd.conf、httpd-vhosts.conf)
1、httpd.conf 位置:C:\Program Files (x86)\Apache Software Foundation\Apache2.2\conf\httpd.conf
将下面五处的注释去掉
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
Include conf/extra/httpd-vhosts.conf
2、httpd-vhosts.conf 位置:C:\Program Files (x86)\Apache Software Foundation\Apache2.2\conf\extra\httpd-vhosts.conf
增加以下配置
1 | > <VirtualHost *:80> |
下面将IIS服务器和tomcat服务都启动起来,从上面的配置来看,可以看出我的俩个服务的端口分别为8083和8084
运行起来之后,通过访问http://www.aaa.com:8083 和 http://www.bbb.com:8084 俩个网站访问正常,配置结束
看起来确实比较简单,但有几个地方需求注意的
1、IIS服务器默认占用了80端口,安装Apache Http Server时如果启动不成功,请修改IIS服务器的端口为其他端口,我这里使用的是8084
2、ProxyPass / http://www.aaa.com:8083/ 这句后面一定要加上“/”,这个问题我找了一天才解决,如果不加上的话,即使网站能够访问到,也会显示不正常,会报类似的错误
[Mon Jul 20 16:34:49 2015] [error] [client 127.0.0.1] proxy: DNS
lookup failure for: 127.0.0.1:8084iis-85.png returned by /iis-85.png,
referer: http://www.aaa.com/
以上就是我使用的Apache Http Server代理进行设置80端口共用的配置,反正我是正常运行啦,在过程中也看了网上的例子,有些是明显错误,根本跑不起来,而且同一篇文章被转发了N次,这里吐下槽,没验证过的东西放到网上,真是害人啊!